In this script, there is conducted the estimation for the measure_marginal approach for a single given env. The programs is the set of bytecode programs with varying number of opcodes. The measurements are time measurements of program runs or benchmarks. The estimation of each opcode is calculated as the regression against the number of a given opcode in the executed programs.

Parametrization. The evm client name env=evmone, the file with programs programs=pg_marginal_full.csv, the file with measurements results=results_marginal_full_evmone.csv,
the output csv file with estimated cost output_estimated_cost=reports-12.01.2025/estimated_cost_marginal_full_evmone.csv, should the details be included in the report details=FALSE.

The comparision of result. Before and after removing outlying measurement. Switch removed_outliers to FALSE to see the comparison.

if (removed_outliers) {
  measurements = remove_compare_outliers(measurements, 'measure_total_time_ns', c(env))
}

Now we can investigate the linear regressions.

for (opcode in all_opcodes) {
  estimate = compute_all(opcode=opcode, env=env, use_median=TRUE, plots=ifelse(details,'all','scatter'))
  estimates[nrow(estimates) + 1, ] = c(opcode, estimate, env)
}

The resulting estimates based on the regressions above.

estimates
##                 op estimate_marginal_ns estimate_marginal_ns_stderr    env
## 1              ADD          2.743772727                 0.095755012 evmone
## 2              MUL         12.407867273                 0.177361195 evmone
## 3              SUB          2.743240909                 0.096384462 evmone
## 4              DIV         12.025501818                 0.092986290 evmone
## 5             SDIV         15.704780000                 0.100986995 evmone
## 6              MOD         12.006354545                 0.094247887 evmone
## 7             SMOD         15.560722727                 0.095766838 evmone
## 8           ADDMOD         19.359514545                 0.043506213 evmone
## 9           MULMOD         32.271122727                 0.069570266 evmone
## 10             EXP         51.217724545                 0.110405165 evmone
## 11      SIGNEXTEND          2.194422727                 0.098196387 evmone
## 12              LT          1.315517273                 0.091841827 evmone
## 13              GT          1.311792727                 0.090722205 evmone
## 14             SLT          1.533600909                 0.099507297 evmone
## 15             SGT          1.531204545                 0.099657007 evmone
## 16              EQ          1.719312727                 0.100763787 evmone
## 17          ISZERO          0.926716364                 0.100874861 evmone
## 18             AND          4.165215455                 0.128158201 evmone
## 19              OR          4.158335455                 0.128865967 evmone
## 20             XOR          4.173126364                 0.127518448 evmone
## 21             NOT          4.167151818                 0.135153083 evmone
## 22            BYTE          1.498188182                 0.097878710 evmone
## 23             SHL          5.979898182                 0.094692940 evmone
## 24             SHR          2.966823636                 0.100538355 evmone
## 25             SAR          7.610057273                 0.148454669 evmone
## 26       KECCAK256        175.176154545                 0.118396321 evmone
## 27         ADDRESS         11.719962727                 0.165789011 evmone
## 28          ORIGIN         29.982928182                 0.121429727 evmone
## 29          CALLER         11.898802727                 0.218418726 evmone
## 30       CALLVALUE          7.334171818                 0.171429847 evmone
## 31    CALLDATALOAD          1.312001818                 0.197010351 evmone
## 32    CALLDATASIZE          1.128894545                 0.224340483 evmone
## 33    CALLDATACOPY          4.815854545                 0.163817024 evmone
## 34        CODESIZE          1.121036364                 0.210087136 evmone
## 35        CODECOPY          3.849663636                 0.082718506 evmone
## 36        GASPRICE         25.601010000                 0.180001465 evmone
## 37     EXTCODESIZE          0.313455455                 0.003879403 evmone
## 38     EXTCODECOPY          0.498990000                 0.028283526 evmone
## 39  RETURNDATASIZE          1.070179091                 0.230774451 evmone
## 40  RETURNDATACOPY          4.988781818                 0.161266389 evmone
## 41     EXTCODEHASH          0.320429091                 0.003393743 evmone
## 42        COINBASE         30.071604545                 0.176130994 evmone
## 43       TIMESTAMP         17.892529091                 0.234952134 evmone
## 44          NUMBER         18.073190909                 0.238317551 evmone
## 45      DIFFICULTY         25.343280000                 0.134338997 evmone
## 46        GASLIMIT         17.917430000                 0.281389113 evmone
## 47         CHAINID         25.602368182                 0.179213016 evmone
## 48     SELFBALANCE          5.838818182                 0.221684173 evmone
## 49             POP          1.309536364                 0.118884155 evmone
## 50           MLOAD          1.665025455                 0.184476433 evmone
## 51         MSTORE8          1.937137273                 0.246724883 evmone
## 52            JUMP          2.167850909                 0.180041093 evmone
## 53           JUMPI          2.529902727                 0.242155166 evmone
## 54              PC          1.059958182                 0.234559575 evmone
## 55           MSIZE          1.107707273                 0.215146136 evmone
## 56             GAS          1.034990909                 0.208428735 evmone
## 57        JUMPDEST          1.695140182                 0.117975972 evmone
## 58           PUSH0          1.113413636                 0.215734971 evmone
## 59            LOG0         69.294795455                 1.898680736 evmone
## 60            LOG1         71.156803636                 2.607678888 evmone
## 61            LOG2         86.361719091                 6.540935934 evmone
## 62            LOG3        101.202245455                 8.752604586 evmone
## 63            LOG4        104.067509091                 8.950512964 evmone
## 64            CALL         -2.859476364                 0.244556823 evmone
## 65          RETURN         -0.007776364                 0.035799755 evmone
## 66    DELEGATECALL         -2.659450909                 0.109040657 evmone
## 67      STATICCALL         -2.890980909                 0.172949272 evmone
## 68          REVERT         -0.007770000                 0.034720408 evmone
## 69           PUSH1          1.709375455                 0.284067417 evmone
## 70           PUSH2          1.608044545                 0.260098402 evmone
## 71           PUSH3          1.540737273                 0.275860014 evmone
## 72           PUSH4          1.557668182                 0.273133255 evmone
## 73           PUSH5          1.624590909                 0.269722528 evmone
## 74           PUSH6          1.564021818                 0.272201806 evmone
## 75           PUSH7          1.623176364                 0.268082720 evmone
## 76           PUSH8          1.572287273                 0.280735746 evmone
## 77           PUSH9          1.719004545                 0.272729904 evmone
## 78          PUSH10          1.726524545                 0.298091818 evmone
## 79          PUSH11          1.787484545                 0.280547887 evmone
## 80          PUSH12          1.796282727                 0.283037725 evmone
## 81          PUSH13          1.743746364                 0.290591069 evmone
## 82          PUSH14          1.807596364                 0.276391631 evmone
## 83          PUSH15          1.803605455                 0.278011451 evmone
## 84          PUSH16          1.902743636                 0.294055773 evmone
## 85          PUSH17          1.984220000                 0.278193178 evmone
## 86          PUSH18          2.161836364                 0.285654511 evmone
## 87          PUSH19          2.132347273                 0.297974771 evmone
## 88          PUSH20          2.242810000                 0.289157101 evmone
## 89          PUSH21          2.352638182                 0.299978535 evmone
## 90          PUSH22          2.379380909                 0.297084375 evmone
## 91          PUSH23          2.428543636                 0.194618601 evmone
## 92          PUSH24          2.305659091                 0.213680125 evmone
## 93          PUSH25          2.507992727                 0.202359174 evmone
## 94          PUSH26          2.457198182                 0.198653720 evmone
## 95          PUSH27          2.463810000                 0.227448682 evmone
## 96          PUSH28          2.456946364                 0.243669212 evmone
## 97          PUSH29          2.463518182                 0.241248133 evmone
## 98          PUSH30          2.491711818                 0.241485164 evmone
## 99          PUSH31          2.511880909                 0.235060978 evmone
## 100         PUSH32          3.226874545                 0.171987119 evmone
## 101           DUP1          0.911340909                 0.092149459 evmone
## 102           DUP2          0.910384545                 0.097658156 evmone
## 103           DUP3          0.908206364                 0.098450066 evmone
## 104           DUP4          0.960272727                 0.111552458 evmone
## 105           DUP5          0.931607273                 0.098244260 evmone
## 106           DUP6          0.926402727                 0.098462100 evmone
## 107           DUP7          0.960881818                 0.106469807 evmone
## 108           DUP8          0.906401818                 0.098180654 evmone
## 109           DUP9          0.925093636                 0.097531315 evmone
## 110          DUP10          0.951713636                 0.113122206 evmone
## 111          DUP11          0.909803636                 0.095183876 evmone
## 112          DUP12          0.933414545                 0.100383706 evmone
## 113          DUP13          0.958016364                 0.109855059 evmone
## 114          DUP14          0.922673636                 0.096425900 evmone
## 115          DUP15          0.930332727                 0.099307221 evmone
## 116          DUP16          0.938211818                 0.105363801 evmone
## 117          SWAP1          3.845812727                 0.171701019 evmone
## 118          SWAP2          3.845572727                 0.183533298 evmone
## 119          SWAP3          3.785810909                 0.171312267 evmone
## 120          SWAP4          3.778337273                 0.171579656 evmone
## 121          SWAP5          3.861620909                 0.187310327 evmone
## 122          SWAP6          3.871387273                 0.193769038 evmone
## 123          SWAP7          3.792503636                 0.185188797 evmone
## 124          SWAP8          3.836467273                 0.174943099 evmone
## 125          SWAP9          3.852827273                 0.189070636 evmone
## 126         SWAP10          3.863721818                 0.182335003 evmone
## 127         SWAP11          3.833721818                 0.180598509 evmone
## 128         SWAP12          3.882257273                 0.202017090 evmone
## 129         SWAP13          3.857888182                 0.193816984 evmone
## 130         SWAP14          3.861672727                 0.187223574 evmone
## 131         SWAP15          3.841660909                 0.157432307 evmone
## 132         SWAP16          3.884692727                 0.196465132 evmone

The results are exported to reports-12.01.2025/estimated_cost_marginal_full_evmone.csv.